package com.jiaotong.smart.smartjiaotong.service.GreenWaveService;

import com.jiaotong.smart.smartjiaotong.entity.GreenWave.*;


/**
 * @author 袁雨森
 * 绿波带相关service
 */
public interface GreenWaveService {

    /**
     * 获取所有绿波带和绿波带数量
     *
     * @return
     */
    ResAllGreenWave getAllGreenWave();

    /**
     * 获取所有正在使用的绿波带和绿波带数量
     *
     * @return
     */
    ResAllGreenWave getAllUsingGreenWave();

    /**
     * 获取所有没有正在使用的绿波带和绿波带数量
     *
     * @return
     */
    ResAllGreenWave getAllNotUsingGreenWave();

    /**
     * 获取单个绿波带实体
     *
     * @param id
     * @return
     */
    GreenWave getSingleGreenWave(Long id);

    /**
     * 更改绿波带状态
     *
     * @param id
     * @param status
     * @return
     */
    int updateGreenWaveStatus(Long id, int status);

    /**
     * 添加绿波带
     *
     * @param reqGreenWaveAndCross
     * @return
     */
    void addGreenWave(ReqGreenWaveAndCross reqGreenWaveAndCross);

    /**
     * 获取绿波带详情
     *
     * @param greenWaveId
     * @return
     */
    ResGreenWaveAndCross getGreenWaveDetail(Long greenWaveId);

    /**
     * 删除绿波带
     *
     * @param greenWaveId
     * @return
     */
    int deleteGreenWave(Long greenWaveId);

    /**
     * 修改绿波带
     *
     * @param greenWave
     */
    int updateGreenWave(GreenWave greenWave);

    /**
     * 添加修改绿波带下的路口信息
     *
     * @param GreenWaveId
     * @param greenWaveCross
     */
    void addAndUpdateGreenWaveCross(Long GreenWaveId, GreenWaveCross greenWaveCross);

    /**
     * 删除绿波带下的路口信息
     * @param greenWaveId
     * @param greenWaveCrossId
     * @return
     */
    int deleteGreenWaveCross(Long greenWaveId, Long greenWaveCrossId);
}
